If you have some content that you want to format in the same way as Thredded posts, you can use the `Thredded::ContentFormatter` class. For example:

```erb
<%= Thredded::ContentFormatter.new(self).format_content('**Hello** world!') %>
```

You can also pass options to the content formatter. For example:

```ruby
module ApplicationHelper

  # Render content using the Thredded content formatter, with a few changes:
  # 1. No GFM quirks, use kramdown as the markup input.
  # 2. <h.>-tag IDs are generated.
  #
  # @param content [String]
  # @return [String] HTML
  def thredded_formatted_content(content)
    Thredded::ContentFormatter.new(
      self,
      kramdown_options: { input: 'kramdown', gfm_quirks: '' },
      whitelist: {
        attributes: {
          'h1' => %w(id),
          'h2' => %w(id),
          'h3' => %w(id),
          'h4' => %w(id),
          'h5' => %w(id),
          'h6' => %w(id)
        }
      }
    ).format_content(content)
  end

end
```

The options passed above are `deep_merge`'d with the defaults. If you'd like more control over the options, sub-class `Thredded::ContentFormatter` and override the protected `content_pipeline_options` method.
